package com.ftg.learn.bus.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ftg.learn.bus.VO.FundVo;
import com.ftg.learn.bus.VO.busExCostAmountVo;
import com.ftg.learn.bus.VO.busExFundsVo;
import com.ftg.learn.bus.VO.busExUpdateVo;
import com.ftg.learn.bus.entity.BusExpenditure;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ftg.learn.bus.entity.Fund;
import com.ftg.learn.bus.entity.request.InsertJFZCRequest;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 公车经费支出登记表 服务类
 * </p>
 *
 * @author lalala
 * @since 2022-03-07
 */
public interface IBusExpenditureService extends IService<BusExpenditure> {


    /**
     * 添加公车经费支出登记表所有信息
     * @param insertAutoRequest
     * @return
     */
//    boolean insertInfo(InsertJFZCRequest insertAutoRequest, List<Long> pIds,
//                       List<Double> CostsAmounts, List<String> invoiceNos);


    /**
     * 添加公车经费支出登记表所有信息  (真)
     * @param insertAutoRequest
     * @return
     */
    boolean insertInfo(InsertJFZCRequest insertAutoRequest);

    /**
     * 修改经费支出表，以及删除经费表并重新添加，达到修改经费表的目的。
     * @param busExFundsVo busExFundsVo
     * @return
     */
    boolean updateExFund(busExFundsVo busExFundsVo);


    /**
     * 分页查询经费支出表全部数据加上对应beid的经费表经费支出总和。
     * @param pagination
     * @return
     */
    List<busExCostAmountVo> showBusExAndSumCost(IPage<busExCostAmountVo> pagination);


    /**
     * 按负责人姓名模糊查找页查询经费支出表全部数据加上对应beid的经费表经费支出总和。
     * @param pagination
     * @param dname
     * @return
     */
    List<busExCostAmountVo> showBusExAndSumCostByDname(IPage<busExCostAmountVo> pagination,String dname);


    /**
     * 根据此经费支出表id查询此次支出表详情。
     * @param beid
     * @return
     */
    List<Fund> showFund(Long beid);


    /**
     * 列出参数表中所有的经费类型
     * @return
     */
    List<Map<String,Object>> showCostType();


    /**
     * 列出参数表中所有的厂商。
     * @return
     */
    List<Map<String,Object>> showManufacturer();


    /**
     * 单纯的修改经费支出表内的信息。
     * @param insertAutoRequest
     * @return
     */
    boolean updateExFund1(busExUpdateVo insertAutoRequest);


    /**
     * 删除经费支出表数据，同时删除支出表内和审批表内关联数据
     * @param beid
     * @return
     */
    boolean delBusEx(Long beid);

    /**
     * 在审批表内查询经费支出表全部数据加上对应beid的经费表经费支出总和。
     * @return
     */
    List<busExCostAmountVo> showBusExAndSumCostInApp(Long beid);
}
